# 使用scrapy-redis分布式爬取CSDN学院平台中所有课程信息。如：https://edu.csdn.net/courses/k 爬取所有课程详情url地址。然后再通过队列url中对应的每个课程详情信息，使用分布式爬取。如：https://edu.csdn.net/course/detail/5466。
# 要求内容：课程标题，课时、讲师、适合人群、学习人数、价格、课程大纲。
# 主项目：爬取CSDN学院平台课程信息列表页面URL
# 第十周作业2)
# 班级：Python五期
# 学员：李子坚

# -*- coding: utf-8 -*-
from scrapy.spiders import CrawlSpider,Rule  
from scrapy.linkextractors import LinkExtractor  
from courselist.items import CourselistItem  

class CourseurlSpider(CrawlSpider):
    '''爬取CSDN学院平台课程信息列表页面URL的爬虫类'''

    name = 'courseurl'
    allowed_domains = ['edu.csdn.net']
    start_urls = ['https://edu.csdn.net/courses/k']		#第一页课程列表页面URL
    item = CourselistItem()

    #Rule是在定义抽取链接的规则
    rules = (  
        Rule(LinkExtractor(allow=('https://edu.csdn.net/courses/k/p[0-9]+',)), callback='parse_item', follow=True),  
    ) 

    def parse_item(self, response):
        '''存储课程信息列表页面URL'''
        item = self.item
        item['url'] = response.url  
        return item
